/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package otros;

import java.awt.Desktop;
import java.io.File;
import java.io.FileOutputStream;
import javax.swing.JTable;
import org.apache.log4j.Logger;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import tablasSql.FacturasAlbaranes;

/**
 *
 * @author FERRETERIA
 */
public class Excel {
    private final static Logger log = Logger.getLogger(Excel.class);
    
    static public void Exportar(JTable tabla, String familia) {
        Util.setConfiguracionLog(Util.LOG4_FICH);
        HSSFWorkbook miLibro = new HSSFWorkbook();
        //Luego creamos una hoja o sheet dentro del libro.
        HSSFSheet miHoja = miLibro.createSheet("hoja");
        HSSFRow miFila = miHoja .createRow(0);
        HSSFCell miCelda = miFila.createCell(0);    // Creamos una celda o cell dentro de la fila.
        miCelda.setCellValue(familia);
        
        miFila = miHoja .createRow(1);          // Creamos una fila o row dentro de la hoja
        for (int j = 0; j < tabla.getColumnCount(); j++) {
           miCelda = miFila.createCell(j);    // Creamos una celda o cell dentro de la fila.
           miCelda.setCellValue(String.valueOf(tabla.getColumnName(j)));
        }
        
        
        for (int i = 0; i < tabla.getRowCount(); i++) {
            miFila = miHoja .createRow(i+2);          // Creamos una fila o row dentro de la hoja
            for (int j = 0; j < tabla.getColumnCount(); j++) {
                miCelda = miFila.createCell(j);    // Creamos una celda o cell dentro de la fila.
                //CellStyle style = miLibro.createCellStyle();
                //style.setShrinkToFit(false);
                //miCelda.setCellStyle(style);
                String valor = String.valueOf(tabla.getValueAt(i, j));
                if (tabla.getColumnName(j).equals("Costo")) 
                    valor = (!valor.equals("null"))? Util.getFormatPrecio(Float.parseFloat(valor), 3): "null";
                if (tabla.getColumnName(j).equals("PVP")) 
                    valor = (!valor.equals("null"))? Util.getFormatPrecio(Float.parseFloat(valor), 2): "null";
                miCelda.setCellValue(valor);  // Generamos el contenido de la celda.
            }
        }
        miHoja.setColumnWidth(1, 2000);
        
        // Guardamos el libro en un nuevo archivo .xls.
        try {
            String ruta = System.getProperty("user.dir");
            FileOutputStream miArchivo = new FileOutputStream("gestion.xls");
            miLibro.write(miArchivo);
            miArchivo.close();

            //mandamos la orden de abrir el excell
           // Process p = Runtime.getRuntime().exec ("rundll32 SHELL32.DLL,ShellExec_RunDLL "+ruta+"gestion.xls");
            Desktop.getDesktop().open(new File(ruta+"\\gestion.xls"));
        } catch (Exception e) {
            log.warn("Exportar: " +e.getMessage());
        }
 
    }
    
    static public void Exportar347(JTable tabla, int tipo, String año) {
        Util.setConfiguracionLog(Util.LOG4_FICH);
        HSSFWorkbook miLibro = new HSSFWorkbook();
        //Luego creamos una hoja o sheet dentro del libro.
        HSSFSheet miHoja = miLibro.createSheet("hoja");
        HSSFRow miFila = miHoja .createRow(0);
        HSSFCell miCelda = miFila.createCell(0);    // Creamos una celda o cell dentro de la fila.
        miCelda.setCellValue("Modelo 347 del año " + año);
        
        miFila = miHoja .createRow(1);          // Creamos una fila o row dentro de la hoja
        for (int j = 0; j < tabla.getColumnCount(); j++) {
           miCelda = miFila.createCell(j);    // Creamos una celda o cell dentro de la fila.
           miCelda.setCellValue(String.valueOf(tabla.getColumnName(j)));
        }
        
        int filasCreadas = 2;
        for (int i = 0; i < tabla.getRowCount(); i++) {
            miFila = miHoja .createRow(i+filasCreadas);          // Creamos una fila o row dentro de la hoja
            for (int j = 0; j < tabla.getColumnCount(); j++) {
                miCelda = miFila.createCell(j);    // Creamos una celda o cell dentro de la fila.
                String valor = String.valueOf(tabla.getValueAt(i, j));
                miCelda.setCellValue(valor);  // Generamos el contenido de la celda.
            }
            //--------------------------------------------- añadir los trimestres
            Float[] trim = FacturasAlbaranes.getTrimestres(tipo, String.valueOf(tabla.getValueAt(i, 0)), año);
            for (int j = 0; j < 4; j++) {
                miFila = miHoja .createRow(i+(++filasCreadas));
                miCelda = miFila.createCell(3);    
                miCelda.setCellValue("Trimestre " + (j+1));
                miCelda = miFila.createCell(4);    
                miCelda.setCellValue(Util.getFormatPrecio(trim[j], 2));
            }
        }
        miHoja.setColumnWidth(1, 2000);
        
        // Guardamos el libro en un nuevo archivo .xls.
        try {
            String ruta = System.getProperty("user.dir");
            FileOutputStream miArchivo = new FileOutputStream("gestion.xls");
            miLibro.write(miArchivo);
            miArchivo.close();

            //mandamos la orden de abrir el excell
           // Process p = Runtime.getRuntime().exec ("rundll32 SHELL32.DLL,ShellExec_RunDLL "+ruta+"gestion.xls");
            Desktop.getDesktop().open(new File(ruta+"\\gestion.xls"));
        } catch (Exception e) {
            log.warn("Exportar: " +e.getMessage());
        }
 
    }
    
}
